﻿#define _CRT_SECURE_NO_WARNINGS 1


#if 0


/*
定义阶乘
n!=1×2×3×⋅⋅⋅×n。
请问100!100! （100100 的阶乘）有多少个正约数。
*/


//#include<iostream>
//using namespace std;
//
//int a[110];//存储每个质数的个数
//
//void zs(int n)
//{
//    for (int j = 2; j <= n; j++)
//        while (n % j == 0)
//        {
//            a[j]++;//若当前n中含有质数j,即将j存储到a数组中
//            n /= j;
//        }
//    if (n > 1)//因为质数从2开始，即若质数n最后大于1
//        a[n]++;//将n存储
//}
//
//int main()
//{
//    long long int num = 1;//num的范围大
//    for (int i = 1; i <= 100; i++)
//    {
//        zs(i);//可得当前数i含有的每个质数的个数
//    }
//    for (int i = 1; i <= 100; i++)
//    {
//        if (a[i] != 0)
//            num = num * (a[i] + 1);//约数个数:等于它的质因数分解式中每个质因数的个数（即指数）加1的连乘的积。
//    }
//    cout << num << endl;
//    return 0;
//}


#include <iostream>
#include<stdio.h>
using namespace std;

int main()
{
    int arr[110] = {0};//存储每个约数的指数；先给他置为0；
    long long num = 1;
    for (int i = 1; i <= 100; i++)
    {
        int x = i;
        for (int j = 2; j <=x; j++)
        {
            while (x % j == 0)//
            {
                arr[j]++;//若当前n中含有约数j,即将j存储到a数组中
                x /= j;
            }
        }
        if (x > 1)
            arr[x]++；//当最后的得到的数大于1，得知最后的数为约数，所以要加1
    }
    for (int i = 0; i <100; i++)
    {
        if (arr[i] != 0)
            num *= (arr[i] + 1);//约数个数:等于它的质因数分解式中每个质因数的个数（即指数）加1的连乘的积。
    }
    printf("%lld", num);
    return 0;
}
//方法巧妙，利用一个数组用来接受质数的指数。

#endif
//



